package com.rybbaby.tss.platform.sysFiles.entity;

import com.rybbaby.tss.core.utils.StringUtils;
import com.rybbaby.tss.platform.sysFileGroup.entity.SysFileGroup;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @author 谢进伟
 * @description 文件库
 * @createDate 2016-11-23 下午11:04:17
 */
@Entity
@Table(name = "sys_files")
@DynamicUpdate(true)
@DynamicInsert(true)
public class SysFiles implements Serializable {

    private static final long serialVersionUID = 52565644716920L;

    /**
     * 主键
     **/
    private String id;
    /**
     * 所属分组
     **/
    private String groupId;
    /**
     * 原始名称
     **/
    private String originalFileName;
    /**
     * 文件名
     **/
    private String fileName;
    /**
     * 相对存储目录
     **/
    private String relativePath;
    /**
     * 已有尺寸
     **/
    private String sizes;
    /**
     * 标题
     **/
    private String remark;
    /**
     * 上传时间
     **/
    private java.sql.Timestamp uploadTime;
    /**
     * 上传人Id
     **/
    private String userId;
    /**
     * 文件类型
     **/
    private String type;
    /**
     * 所属原文件
     **/
    private String originalFileId;
    /**
     * 缩略文件
     **/
    private Boolean isThumbnail;
    /**
     * 七牛云存储的key
     **/
    private String qiniuKey;
    /**
     * 七牛云存储的hash值
     **/
    private String qiniuHash;
    /**
     * 版本
     **/
    private Integer version;
    /**
     * 所属分组
     **/
    private SysFileGroup group;

    /**
     * 方法: 取得所属分组
     *
     * @return SysFileGroup 所属分组
     */
    @JoinColumn(name = "groupId", insertable = false, updatable = false)
    @ManyToOne(fetch = FetchType.LAZY, targetEntity = SysFileGroup.class)
    public SysFileGroup getGroup() {
        return this.group;
    }

    /**
     * 方法: 设置所属分组
     *
     * @param group 所属分组
     */
    public void setGroup(SysFileGroup group) {
        this.group = group;
    }

    /**
     * 方法: 取得主键
     *
     * @return java.lang.String 主键
     */
    @Id
    @GeneratedValue(generator = "sys_filesIDGenerator", strategy = GenerationType.AUTO)
    @GenericGenerator(name = "sys_filesIDGenerator", strategy = "uuid")
    @Column(name = "id", nullable = false, length = 32)
    public String getId() {
        return this.id;
    }

    /**
     * 方法: 设置主键
     *
     * @param id 主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 方法: 取得所属分组
     *
     * @return java.lang.String 所属分组
     */
    @Column(name = "groupId", nullable = true, length = 32)
    public String getGroupId() {
        return this.groupId;
    }

    /**
     * 方法: 设置所属分组
     *
     * @param groupId 所属分组
     */
    public void setGroupId(String groupId) {
        this.groupId = StringUtils.isBlank(groupId) ? null : groupId;
    }

    /**
     * 方法: 取得文件名
     *
     * @return java.lang.String 文件名
     */
    @Column(name = "fileName", nullable = true, length = 255)
    public String getFileName() {
        return this.fileName;
    }

    /**
     * 方法: 设置文件名
     *
     * @param fileName 文件名
     */
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    /**
     * 方法: 取得原始名称
     *
     * @return java.lang.String 文件名
     */
    @Column(name = "originalFileName", nullable = true, length = 255)
    public String getOriginalFileName() {
        return originalFileName;
    }

    /**
     * 方法: 设置原始名称
     *
     * @param originalFileName 原始名称
     */
    public void setOriginalFileName(String originalFileName) {
        this.originalFileName = originalFileName;
    }

    /**
     * 方法: 取得网络路径
     *
     * @return java.lang.String 网络路径
     */
    @Column(name = "relativePath", nullable = true, length = 1000)
    public String getRelativePath() {
        return this.relativePath;
    }

    /**
     * 方法: 设置网络路径
     *
     * @param relativePath 网络路径
     */
    public void setRelativePath(String relativePath) {
        this.relativePath = relativePath;
    }

    /**
     * 方法: 取得已有尺寸
     *
     * @return java.lang.String 已有尺寸
     */
    @Column(name = "sizes", nullable = true, length = 200)
    public String getSizes() {
        return this.sizes;
    }

    /**
     * 方法: 设置已有尺寸
     *
     * @param sizes 已有尺寸
     */
    public void setSizes(String sizes) {
        this.sizes = sizes;
    }

    /**
     * 方法: 取得标题
     *
     * @return java.lang.String 标题
     */
    @Column(name = "remark", nullable = true, length = 255)
    public String getRemark() {
        return this.remark;
    }

    /**
     * 方法: 设置标题
     *
     * @param remark 标题
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 方法: 取得上传时间
     *
     * @return java.sql.Timestamp 上传时间
     */
    @Column(name = "uploadTime", nullable = true, length = 19)
    public java.sql.Timestamp getUploadTime() {
        return this.uploadTime;
    }

    /**
     * 方法: 设置上传时间
     *
     * @param uploadTime 上传时间
     */
    public void setUploadTime(java.sql.Timestamp uploadTime) {
        this.uploadTime = uploadTime;
    }

    /**
     * 方法: 取得上传人Id
     *
     * @return java.lang.String 上传人Id
     */
    @Column(name = "userId", nullable = true, length = 32)
    public String getUserId() {
        return this.userId;
    }

    /**
     * 方法: 设置上传人Id
     *
     * @param userId 上传人Id
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /**
     * 方法: 取得文件类型
     *
     * @return java.lang.String 文件类型
     */
    @Column(name = "type", nullable = true, length = 20)
    public String getType() {
        return this.type;
    }

    /**
     * 方法: 设置文件类型
     *
     * @param type 文件类型
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * 方法: 取得所属原文件
     *
     * @return java.lang.String 所属原文件
     */
    @Column(name = "originalFileId", nullable = true, length = 32)
    public String getOriginalFileId() {
        return this.originalFileId;
    }

    /**
     * 方法: 设置所属原文件
     *
     * @param originalFileId 所属原文件
     */
    public void setOriginalFileId(String originalFileId) {
        this.originalFileId = originalFileId;
    }

    /**
     * 方法: 取得缩略文件
     *
     * @return java.lang.Boolean 缩略文件
     */
    @Column(name = "isThumbnail", nullable = true, length = 1)
    public Boolean getIsThumbnail() {
        return this.isThumbnail;
    }

    /**
     * 方法: 设置缩略文件
     *
     * @param isThumbnail 缩略文件
     */
    public void setIsThumbnail(Boolean isThumbnail) {
        this.isThumbnail = isThumbnail;
    }

    /**
     * 方法: 取得版本
     *
     * @return java.lang.Integer 版本
     */
    @Version
    @Column(name = "version", nullable = true, length = 11)
    public Integer getVersion() {
        return this.version;
    }

    /**
     * 方法: 设置版本
     *
     * @param version 版本
     */
    public void setVersion(Integer version) {
        this.version = version;
    }

    @Column(name = "qiniuKey")
    public String getQiniuKey() {
        return qiniuKey;
    }

    public void setQiniuKey(String qiniuKey) {
        this.qiniuKey = qiniuKey;
    }

    @Column(name = "qiniuHash")
    public String getQiniuHash() {
        return qiniuHash;
    }

    public void setQiniuHash(String qiniuHash) {
        this.qiniuHash = qiniuHash;
    }
}